@@ -33,8 +33,9 @@ module MissionsHelper |
||
| 33 | 33 |
|
| 34 | 34 |
def mission_time_left(mission, position = 'pull-left') |
| 35 | 35 |
content_tag(:div, class: 'mission-counter mission-time-left '+ position) do |
| 36 |
- content_tag(:div, mission.days_left.html_safe) + content_tag(:div, (t 'mission.days_left')) |
|
| 36 |
+ content_tag(:div, mission.time_left_stats[0].html_safe) + content_tag(:div, mission.time_left_stats[1].html_safe) |
|
| 37 | 37 |
end |
| 38 | 38 |
end |
| 39 | 39 |
|
| 40 |
+ |
|
| 40 | 41 |
end |
@@ -13,7 +13,7 @@ class Mission < ActiveRecord::Base |
||
| 13 | 13 |
process_in_background :cover_img |
| 14 | 14 |
|
| 15 | 15 |
after_initialize do |user| |
| 16 |
- check_for_completion |
|
| 16 |
+ check_for_time_left |
|
| 17 | 17 |
end |
| 18 | 18 |
|
| 19 | 19 |
def agent_count |
@@ -99,6 +99,14 @@ class Mission < ActiveRecord::Base |
||
| 99 | 99 |
end |
| 100 | 100 |
end |
| 101 | 101 |
|
| 102 |
+ def check_for_time_left |
|
| 103 |
+ if self.status == 2 && self.end_date != nil |
|
| 104 |
+ if self.seconds_left <= 0 |
|
| 105 |
+ self.check_for_completion |
|
| 106 |
+ end |
|
| 107 |
+ end |
|
| 108 |
+ end |
|
| 109 |
+ |
|
| 102 | 110 |
def check_for_completion |
| 103 | 111 |
if self.status == 1 || self.status == 2 |
| 104 | 112 |
if seconds_left > 0 |
@@ -119,20 +127,6 @@ class Mission < ActiveRecord::Base |
||
| 119 | 127 |
self.update(status: 4) |
| 120 | 128 |
end |
| 121 | 129 |
|
| 122 |
- def days_left |
|
| 123 |
- if self.status == 3 || self.status == 4 |
|
| 124 |
- return '0' |
|
| 125 |
- elsif self.status == 1 && self.end_date == nil |
|
| 126 |
- return '?' |
|
| 127 |
- elsif self.end_date |
|
| 128 |
- time_dif = self.end_date - Time.now |
|
| 129 |
- days_left = time_dif / 60 / 60 / 24 |
|
| 130 |
- return days_left.round.to_s |
|
| 131 |
- else |
|
| 132 |
- return '∞' |
|
| 133 |
- end |
|
| 134 |
- end |
|
| 135 |
- |
|
| 136 | 130 |
def seconds_left |
| 137 | 131 |
if self.end_date |
| 138 | 132 |
seconds_left = self.end_date - Time.now |
@@ -142,4 +136,47 @@ class Mission < ActiveRecord::Base |
||
| 142 | 136 |
end |
| 143 | 137 |
end |
| 144 | 138 |
|
| 139 |
+ def time_left |
|
| 140 |
+ array = self.time_left_stats |
|
| 141 |
+ return "#{array[0]} #{array[1]}"
|
|
| 142 |
+ end |
|
| 143 |
+ |
|
| 144 |
+ def time_left_stats |
|
| 145 |
+ if self.status == 3 || self.status == 4 |
|
| 146 |
+ time = '0' |
|
| 147 |
+ time_scale = (I18n.t 'time.seconds') |
|
| 148 |
+ elsif self.status == 1 && self.end_date == nil |
|
| 149 |
+ time = '?' |
|
| 150 |
+ elsif self.end_date |
|
| 151 |
+ days_left = self.seconds_left / 60 / 60 / 24 |
|
| 152 |
+ if days_left >= 2 |
|
| 153 |
+ time = days_left.round.to_s |
|
| 154 |
+ time_scale = (I18n.t 'time.days') |
|
| 155 |
+ elsif days_left < 2 |
|
| 156 |
+ hours_left = self.seconds_left / 60 / 60 |
|
| 157 |
+ if hours_left >= 2 |
|
| 158 |
+ time = hours_left.round.to_s |
|
| 159 |
+ time_scale = (I18n.t 'time.hours') |
|
| 160 |
+ elsif hours_left < 2 |
|
| 161 |
+ minutes_left = self.seconds_left / 60 |
|
| 162 |
+ if minutes_left > 3 |
|
| 163 |
+ time = minutes_left.round.to_s |
|
| 164 |
+ time_scale = (I18n.t 'time.minutes') |
|
| 165 |
+ elsif minutes_left <= 3 |
|
| 166 |
+ time = self.seconds_left.round.to_s |
|
| 167 |
+ time_scale = (I18n.t 'time.seconds') |
|
| 168 |
+ end |
|
| 169 |
+ end |
|
| 170 |
+ end |
|
| 171 |
+ else |
|
| 172 |
+ time = '∞' |
|
| 173 |
+ time_scale = '' |
|
| 174 |
+ end |
|
| 175 |
+ if time_scale != '' |
|
| 176 |
+ time_scale = (time_scale.to_s + ' ' + (I18n.t 'time.remaining')) |
|
| 177 |
+ end |
|
| 178 |
+ array = [time, time_scale] |
|
| 179 |
+ return array |
|
| 180 |
+ end |
|
| 181 |
+ |
|
| 145 | 182 |
end |
@@ -37,9 +37,9 @@ |
||
| 37 | 37 |
<% end %> |
| 38 | 38 |
<% end %> |
| 39 | 39 |
<%= content_tag(:div, class: 'span4 mission-stats') do %> |
| 40 |
- <%= content_tag(:span, mission.days_left.html_safe, class: 'mission-timer timer-large') %> |
|
| 40 |
+ <%= content_tag(:span, mission.time_left_stats[0].html_safe, class: 'mission-timer timer-large') %> |
|
| 41 | 41 |
<%= content_tag(:br) %> |
| 42 |
- <%= content_tag(:div, (t 'mission.days_left'), class: 'timer-legend') %> |
|
| 42 |
+ <%= content_tag(:div, mission.time_left_stats[1].html_safe, class: 'timer-legend') %> |
|
| 43 | 43 |
|
| 44 | 44 |
<% # Progress bar %> |
| 45 | 45 |
<%= render :partial => 'mission_percentage_bar', locals: { mission: mission, size: 'progress-bar-mission-stats' } %>
|
@@ -79,6 +79,9 @@ en: |
||
| 79 | 79 |
x_days: |
| 80 | 80 |
one: 1 day |
| 81 | 81 |
other: ! '%{count} days'
|
| 82 |
+ x_hours: |
|
| 83 |
+ one: 1 hour |
|
| 84 |
+ other: ! '%{count} hours'
|
|
| 82 | 85 |
x_minutes: |
| 83 | 86 |
one: 1 minute |
| 84 | 87 |
other: ! '%{count} minutes'
|
@@ -308,4 +311,16 @@ en: |
||
| 308 | 311 |
export: Export CVS |
| 309 | 312 |
success: 'Thanks for subscribing to our newsletter!' |
| 310 | 313 |
failure: 'An error ocured! Please try again later.' |
| 311 |
- invalid: 'The email you entered is not valid.' |
|
| 314 |
+ invalid: 'The email you entered is not valid.' |
|
| 315 |
+ time: |
|
| 316 |
+ remaining: remaining |
|
| 317 |
+ year: Year |
|
| 318 |
+ years: Years |
|
| 319 |
+ day: Day |
|
| 320 |
+ days: Days |
|
| 321 |
+ hour: Hour |
|
| 322 |
+ hours: Hours |
|
| 323 |
+ minute: Minute |
|
| 324 |
+ minutes: Minutes |
|
| 325 |
+ second: Second |
|
| 326 |
+ seconds: Seconds |
@@ -79,6 +79,9 @@ pt-BR: |
||
| 79 | 79 |
x_days: |
| 80 | 80 |
one: 1 dia |
| 81 | 81 |
other: ! '%{count} dias'
|
| 82 |
+ x_hours: |
|
| 83 |
+ one: 1 hora |
|
| 84 |
+ other: ! '%{count} horas'
|
|
| 82 | 85 |
x_minutes: |
| 83 | 86 |
one: 1 minuto |
| 84 | 87 |
other: ! '%{count} minutos'
|
@@ -312,4 +315,16 @@ pt-BR: |
||
| 312 | 315 |
export: Exportart CVS |
| 313 | 316 |
success: 'Obrigado por se cadastrar na nossa newsletter!' |
| 314 | 317 |
failure: 'Ocorreu um erro. Por favor tente de novo mais tarde.' |
| 315 |
- invalid: 'O endereço de email não é valido.' |
|
| 318 |
+ invalid: 'O endereço de email não é valido.' |
|
| 319 |
+ time: |
|
| 320 |
+ remaining: restantes |
|
| 321 |
+ year: Ano |
|
| 322 |
+ years: Anos |
|
| 323 |
+ day: Dia |
|
| 324 |
+ days: Dias |
|
| 325 |
+ hour: Hora |
|
| 326 |
+ hours: Horas |
|
| 327 |
+ minute: Minuto |
|
| 328 |
+ minutes: Minutos |
|
| 329 |
+ second: Segundos |
|
| 330 |
+ seconds: Segundos |